#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Author  : lkm
"""
    乳腺癌的诊断：通过样本变量进行良性或恶性预测分类。
"""

import pandas as pd
from sklearn.svm import SVC
from sklearn.metrics import classification_report

# -------------------- 数据处理 -------------------- #
# 读取数据集
data = pd.read_csv(r"cancerdata.txt")


# 处理数据：获取待预测数据集
data_prect = data.iloc[500:,2:]
# 处理数据：获取待预测数据集的编号
data_prect_number = data.iloc[500:, 0].values.tolist()
# 处理数据：获取训练数据集
data_train = data.iloc[:499,1:]

# 转换数据标签
data_train.replace('B', 1, inplace=True) # 良性肿瘤
data_train.replace('M', 0, inplace=True) # 恶性肿瘤

# 划分训练集的自变量与因变量
x, y = data_train.iloc[:,1:], data_train.iloc[:,0]
# ------------------------------------------------- #

# --------------------建立模型----------------------- #
# 建立模型
model = SVC(kernel='linear') # 核函数：线性核函数linear
model.fit(x, y)
# ------------------------------------------------- #

# -------------------- 模型检测 --------------------#
# 检验模型
y_pred = model.predict(x)
# 获取检验报告
report = classification_report(y, y_pred)
print(report)
# 检验结果：模型准确度为 0.97

# 查看预测结果
y0_pred = model.predict(data_prect)
print(y0_pred)

# 生成DataFrame
dataframe = pd.DataFrame({'患者编号': data_prect_number,'预测结果': y0_pred})
# 输出excel文件
dataframe.to_excel(r"乳腺癌的诊断预测结果.xlsx", index=False)